﻿/*
* Copyright (c) 2022,
* All rights reserved.
*
* 文件名称：pet.h
* 创建日期：2022/3/12
* 摘 要：宠物类接口声明
*
* 当前版本：1.0
* 作 者：mason
* 完成日期：
*/

#ifndef PET_H
#define PET_H

#include <QWidget>
#include <QVector>
#include <QPixmap>
#include <QDesktopWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QMenu>
#include <QDebug>
#include <QInputDialog>
#include <QEvent>

#include "petmusic.h"
#include "arrowwidget.h"

namespace Ui {
class Pet;
}

#define HI_TEXT "喵~~~ 我是mi-meow，右键点我探索更多功能。喵~~~"

#define MAX_NUM_ANI_FRAMES      3    //动画帧数
#define PIXMAP_NUM_START        3  //启动动画帧数
#define PIXMAP_NUM_PLAY_MUSIC   6   //音乐播放动画帧数
#define PIXMAP_NUM_DAILY        6    //日常动画帧数
/* 动画资源路径 */
#define AN_PATH_START ":/start/resource/animation/start/start_%1.png"
#define AN_PATH_PLAY_MUSIC  ":/play_music/resource/animation/music_play/play_%1.png"
#define AN_PATH_DAILY   ":/daily/resource/animation/daily/daily_%1.png"
/* 动画模式 */
typedef enum _ANT_MODE_{
    ANT_MODE_START = 0,   /* 启动动画 */
    ANT_MODE_MUSIC,       /* 音乐动画 */
    ANT_MODE_DAILY,
    ANT_MODE_MAX

}ANT_MODE;

class Pet : public QWidget
{
    Q_OBJECT

public:
    explicit Pet(QWidget *parent = 0);
    ~Pet();

    /* 动画接口 */
    void antPlayMusic();    //音乐动画
    void antPlay(int pix_nums, QString path, ANT_MODE mode);
//    void playFrames();  /* 播放动画帧 */

//    /* 动画接口 */
//    void animationStart();  /* 起始动画 */
protected:
    void timerEvent(QTimerEvent *);
    void paintEvent(QPaintEvent * event);
    void mousePressEvent(QMouseEvent *e);
    void mouseMoveEvent(QMouseEvent *e);
    bool eventFilter(QObject * obj, QEvent * event);
private:
    Ui::Pet *ui;
    QPoint pos;  //鼠标相对于窗口的位置，不是相对屏幕的位置
    QVector <QPixmap > pixmap_list; //当前动画帧
    int pixmap_index;
    int pixmap_num;
    int current_timer;  //当前定时器id
    PetMusic *music_ctl;
    ANT_MODE ant_mode;
    bool is_playing;
    ArrowWidget *info_widget;   //信息窗


public slots:
    void slotPlayMusic();
    void slotMusicNext();
    void slotMusicAdd();
};


#endif // PET_H
